package com.obelisco.vista.seguridad;

import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

import com.obelisco.modelo.data.CarpetaTransaccion;
import com.obelisco.modelo.data.Transaccion;
import com.obelisco.modelo.data.Usuario;

public class BarraMenuUsuario extends BarraMenu implements IComponenteUsuario{
	
	private Usuario usuario;
	
	private Vector<EjecutarListener> listeners = new Vector<EjecutarListener>();

	public void addBarraMenuUsuarioListener(EjecutarListener listener) {
		listeners.add(listener);
	}

	public void removeBarraMenuUsuarioListener(EjecutarListener listener) {
		listeners.remove(listener);
	}

	public void distribuirEventoTransaccion(Transaccion t) {

		for (Iterator i = listeners.iterator(); i.hasNext();) {
			EjecutarListener l = (EjecutarListener) i.next();
			l.onClickTransaccion(t);
		}

	}
	
	public void distribuirEventoCarpeta(CarpetaTransaccion c) {

		for (Iterator i = listeners.iterator(); i.hasNext();) {
			EjecutarListener l = (EjecutarListener) i.next();
			l.onClickCarpeta(c);
		}

	}
	
	private EjecutarListener eventoEjecucion = new EjecutarListener(){

		public void onClickCarpeta(CarpetaTransaccion carpeta) {
			// No se hace Nada
		}

		public void onClickTransaccion(Transaccion transaccion) {
			distribuirEventoTransaccion(transaccion);
		}
		
	};
	

	@Override
	public void setMenus(Map<String, ContenedorEmergente> menus) {
		// TODO Auto-generated method stub
		super.setMenus(menus);
		// Se pregunta si los Contenedores son de Tipo ContenedorMenuUsuario
		for (ContenedorEmergente contenedor : menus.values()) {
			if (contenedor instanceof ContenedorMenuUsuario) {
				ContenedorMenuUsuario contenedorUsuario = (ContenedorMenuUsuario) contenedor;
				contenedorUsuario.addContenedorMenuUsuarioListener(eventoEjecucion);
			}
		}
	}

	public void setUsuario(Usuario usuario) {
		// TODO Auto-generated method stub
		this.usuario = usuario;
		for (ContenedorEmergente contenedor : getMenus().values()) {
			if (contenedor instanceof ContenedorMenuUsuario) {
				ContenedorMenuUsuario contenedorUsuario = (ContenedorMenuUsuario) contenedor;
				contenedorUsuario.setUsuario(usuario);
			}
		}

	}

	
	

}
